home *** CD-ROM | disk | FTP | other *** search
- #include "sky.h"
-
- extern struct juptab
- {
- float f[6];
- char c[3];
- } juptab[];
-
- jup()
- {
- double pturbl, pturbb, pturbr;
- double lograd;
- double dele, enom, vnom, nd, sl;
- double q0, v0, t0, m0, j0 , s0, u0, n0;
- double lsun, elong, ci, dlong;
- double planp[9];
- struct juptab *pp = &juptab[0];
- double olong;
- double grin;
- double temp;
-
- /*
- * The arguments nnd coefficients are taken from
- *
- * Here are the mean orbital elements.
- */
-
- object = "Jupiter ";
- ecc = 0.04833748 + 1.63903e-4*capt - 0.4642e-6*capt2 - 1.593e-9*capt3;
- incl = 1.3086429 - 0.005696*capt + 3.89e-6*capt2;
- node = 99.4431901 + 1.0105300*capt + 3.522e-4*capt2 - 8.51e-6*capt3;
- argp = 13.4119487 + 0.21344495*capt + 7.466e-4*capt2 - 3.7946e-6*capt3;
- anom = 225.3350378 + 0.0830853474*eday - 8.332e-4*capt2 + 3.9876e-6*capt3;
- motion = .083091212;
- mrad = 5.202803;
-
- incl *= radian;
- node *= radian;
- argp *= radian;
- anom = fmod(anom, 360.)*radian;
- motion *= radian;
-
- /*
- * Longitudes of perturbing planets,
- * They are of epoch Jan 0.5, 1900, and are
- * referred to the fixed qquinox of that date.
- */
-
- q0 = 178.179 + 4.092338817*eday;
- v0 = 342.767 + 1.602130491*eday;
- t0 = 99.697 + 0.985609114*eday;
- m0 = 293.748 + 0.524032950*eday;
- j0 = 238.050 + 0.083091230*eday;
- s0 = 266.280 + 0.033459743*eday;
- u0 = 243.370 + 0.011731421*eday;
- n0 = 85.183 + 0.005987356*eday;
-
- q0 *= radian;
- v0 *= radian;
- t0 *= radian;
- m0 *= radian;
- j0 *= radian;
- s0 *= radian;
- u0 *= radian;
- n0 *= radian;
-
- grin = 5.*s0 - 2.*j0 - 8079.0*radsec*capt;
-
- planp[1] = q0;
- planp[2] = v0;
- planp[3] = t0;
- planp[4] = m0;
- planp[5] = j0;
- planp[6] = s0;
- planp[7] = u0;
- planp[8] = n0;
-
- /*
- * Computation of long period terms affecting the mean anomaly.
- */
-
- anom += 0.
- +(1192.85-6.076*capt-0.0400*capt2+0.00075*capt3)*radsec*sin(grin)
- +(-23.80-0.192*capt+0.0226*capt2-0.00080*capt3)*radsec*cos(grin)
- +(-11.04-0.060*capt-0.0072*capt2+0.00021*capt3)*radsec*sin(2.*grin)
- +(1.44-0.086*capt+0.0004*capt2+0.00006*capt3)*radsec*cos(2.*grin)
-
- + (8.22-0.120*capt-0.002*capt2)*radsec*sin(2.*j0-6.*s0+3.*u0)
- + (0.55 + 0.420*capt - 0.0079*capt2)*radsec*cos(2.*j0-6.*s0+3.*u0)
- ;
-
- /*
- * Computation of elliptic orbit.
- */
-
- enom = anom + ecc*sin(anom);
- do {
- dele = (anom - enom + ecc * sin(enom)) /
- (1. - ecc*cos(enom));
- enom += dele;
- } while(fabs(dele) > 1.e-8);
- vnom = 2.*atan2(sqrt((1.+ecc)/(1.-ecc))*sin(enom/2.),
- cos(enom/2.));
- rad = mrad*(1. - ecc*cos(enom));
-
- /*
- * Perturbations in longitude.
- */
-
- pturbl = 0.
- +(-83.79-1.222*capt+0.0097*capt2)*sin(grin-j0)
- +(137.08-1.508*capt-0.0069*capt2)*cos(grin-j0)
- ;
-
- for(;;){
- if(pp->c[2]==0){
- pp++;
- break;
- }
- temp = planp[pp->c[2]]*pp->c[0] + j0*pp->c[1];
- pturbl += (pp->f[0]+pp->f[1]*capt+pp->f[2]*capt2)*sin(temp)
- + (pp->f[3]+pp->f[4]*capt+pp->f[5]*capt2)*cos(temp);
- pp++;
- }
-
- /*
- * Perturbations in latitude.
- */
-
- pturbb = 0.;
- /*
- for(;;){
- if(pp->f[0]==0.){
- pp++;
- break;
- }
- pturbb += pp->f[0]*cos(pp->f[1] + pp->c[0]*j0 + pp->c[1]*planp[pp->c[2]]);
- pp++;
- }
- */
-
- /*
- * Perturbations in log radius vector.
- */
-
- pturbr = 0.;
- /*
- for(;;){
- if(pp->f[0]==0.){
- pp++;
- break;
- }
- pturbr += pp->f[0]*cos(pp->f[1] + pp->c[0]*j0 + pp->c[1]*planp[pp->c[2]]);
- pp++;
- }
- */
- pturbr *= 1.e-6;
-
- /*
- * reduce to the ecliptic
- */
-
- olong = vnom + argp + pturbl*radsec;
- nd = olong - node;
- lambda = node + atan2(sin(nd)*cos(incl), cos(nd));
-
- sl = sin(incl)*sin(nd);
- beta = atan2(sl, sqrt(1.-sl*sl)) + pturbb*radsec;
-
- lograd = pturbr*2.30258509;
- rad *= 1. + lograd;
-
- /*
- * Compute motion for planetary aberration.
- */
-
- temp = motion*mrad*mrad*sqrt(1.-ecc*ecc)/(rad*rad);
- ldot = temp*sin(2.*(lambda-node))/sin(2.*(olong-node));
- bdot = temp*sin(incl)*cos(lambda-node);
- rdot = motion*mrad*ecc*sin(olong-argp)/sqrt(1.-ecc*ecc);
-
- /*
- * Compute magnitude.
- */
-
- mag = -8.93;
-
- semi = 98.57;
-
- helio();
- geo();
-
- }
-